11.3.2.1. İkili Ağaç Üzerinde Dizide İkili Arama Fonksiyonu

AŞağıdaki fonksiyon ikili ağaç üzerinde dolaşma algoritmasının arama için uyarlanmış halidir; ağaç üzerindeki tüm düğümler dolaşılırken düğümlerde tutulan verilere bakılmakta ve aranan ile uyuşanlar yazEkrana() adlı fonksiyona gönderilmektedir. Bu şekildeki bir arama işlemi ikincil anahtar sözcüklü arama için uygundur. Fonksiyonun çalışma şekli şöyledir: satırda kök işaretçisi gelen ağacın dolu olup olmadığına bakılmakta ve eğer boş ağaç ise bir işlem yapılmadan dönülmektedir; . satıra geçilmişse dalları olan bir ağaç var anlamına gelir ve burada aranan ile o andaki ağacın kök düğümü içerisindeki anahtar sözcük değeri karşılaştırılmaktadır. Eğer ikisi aynı ise, aranan bir kez bulunmuştur ve sonuç yazEkrana() adlı fonksiyona gönderilir; bu fonksiyon örnek olarak verilmiştir, uygulamaya dönük olarak değiştirilebilir... .satırda ağacın sol altağacına ve . satırda da sağ altağacına dallanılır. Fonksiyon, kendisini çağırana hiçbir şey göndermediği için tipi void olmuştur.

void ikiliAramaAgac(agacdugum *agac, veriTürü aranan)
{
    if(agac==NULL) return; /* Ağaç boş ise dön */
    if(aranan==agac->anahtar) /* aranan kök düğümde ise bulundu */
              yazEkrana(Agac);
    if(aranan < agac->anahtar) /* aranan hangi alt ağaçta? */
         ikiliaramaAgac(agac->sol); /* sol altağaca dallan */
         else
          ikiliaramaAgac(agac->sag); /* sağ altağaca dallan */
}